//package com.example.lcqexcel.jzjc.test;
//
//import com.alibaba.excel.EasyExcel;
//import com.example.lcqexcel.jzjc.dto.DataDto;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.math.BigDecimal;
//import java.text.DecimalFormat;
//import java.util.ArrayList;
//import java.util.List;
//
//public class MyExecutor {
//
//    public static final int LINE_NUM = 5;
//
//    public static void main(String[] args) {
//        exec();
//        //getRandomNum();
//    }
//
//    private static BigDecimal getRandomNum() {
//        double random = Math.random();
//        DecimalFormat df = new DecimalFormat("0.0");
//        String format = df.format(random);
//        return new BigDecimal(format);
//    }
//
//    //根据模板导出
//    private static void exec1() {
//        String templateFileName = "D:/test/python/平台导出111.xlsx";
//        String outFileName = "D:/test/python/平台导出out.xlsx";
//        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
//        EasyExcel.write(outFileName, DataDto.class).withTemplate(templateFileName).sheet().doWrite(()->{
//
//            List<DataDto> resultList = new ArrayList<>();
//            for (int i = 0; i < LINE_NUM; i++) {
//                DataDto dataDto = new DataDto();
//                dataDto.setRoomNum(i+1);
//                dataDto.setWindowsillHeight(getRandomNum());
//                dataDto.setGlassTransmittance(getRandomNum());
//                dataDto.setWallReflectivity(getRandomNum());
//                resultList.add(dataDto);
//            }
//            return resultList;
//        });
//    }
//
//    //直接导出，python程序不识别style
//    private static void exec2() {
//
//        String outFileName = "D:/test/python/平台导出out.xlsx";
//        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
//        EasyExcel.write(outFileName, DataDto.class).sheet().doWrite(()->{
//
//            List<DataDto> resultList = new ArrayList<>();
//            for (int i = 0; i < LINE_NUM; i++) {
//                DataDto dataDto = new DataDto();
//                dataDto.setRoomNum(i+1);
//                dataDto.setWindowsillHeight(getRandomNum());
//                dataDto.setGlassTransmittance(getRandomNum());
//                dataDto.setWallReflectivity(getRandomNum());
//                resultList.add(dataDto);
//            }
//            return resultList;
//        });
//    }
//
//    //填充方式
//    private static void exec() {
//        String outFileName = "D:/test/python/平台导出out.xlsx";
//        String pyFileName = "D:/test/python/beijing-test.py";
//        try {
//            inputData(outFileName);
//            execPy(pyFileName);
//            readData(outFileName);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    private static void inputData(String outFileName) {
//        String templateFileName = "D:/test/python/平台导出template.xlsx";
//        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
//        EasyExcel.write(outFileName, DataDto.class).withTemplate(templateFileName).sheet().doFill(()->{
//            List<DataDto> resultList = new ArrayList<>();
//            for (int i = 0; i < LINE_NUM; i++) {
//                DataDto dataDto = new DataDto();
//                dataDto.setRoomNum(i+1);
//                dataDto.setWindowsillHeight(getRandomNum());
//                dataDto.setGlassTransmittance(getRandomNum());
//                dataDto.setWallReflectivity(getRandomNum());
//                resultList.add(dataDto);
//            }
//            return resultList;
//        });
//    }
//
//
//    private static void readData(String fileName) {
//        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 文件流会自动关闭
//        MyDataListener dataListener = new MyDataListener();
//        EasyExcel.read(fileName, DataDto.class, dataListener).sheet().doRead();
//    }
//
//    private static void execPy(String pyFile) throws IOException {
//        String cmds = String.format("python %s", pyFile);
//        BufferedReader in = null;
//        try {
//            Process pcs = Runtime.getRuntime().exec(cmds);
//            pcs.waitFor();
//            in = new BufferedReader(new InputStreamReader(pcs.getInputStream(),"GB2312"));
//            boolean success = false;
//            String result;
//            while ((result = in.readLine()) != null){
//                System.out.println(result);
//                if (result.equals("success!!!!")){
//                    success = true;
//                    break;
//                }
//            }
//
//            if (!success){
//                throw new RuntimeException("执行py程序出错！");
//            }
//
//            System.out.println("执行成功");
//        } catch (IOException e) {
//            e.printStackTrace();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }finally {
//            if (in != null){
//                in.close();
//            }
//        }
//    }
//}
